# 2024.10.03力扣网刷题
# 多数元素 II——数组、哈希表、计数、排序——简单
# 给定一个大小为 n 的整数数组，找出其中所有出现超过 ⌊ n / 3 ⌋ 次的元素。
# 示例 1：
# 输入：nums = [3, 2, 3]
# 输出：[3]
# 示例 2：
# 输入：nums = [1]
# 输出：[1]
# 示例 3：
# 输入：nums = [1, 2]
# 输出：[1, 2]
# 提示：
# 1 <= nums.length <= 5 * 10^4
# - 10^9 <= nums[i] <= 10^9
# 进阶：尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。


class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        my_set = set(nums)
        my_dict = dict(zip(my_set, [nums.count(i) for i in my_set]))
        ans = []
        tag = len(nums) // 3
        for key in my_dict:
            if my_dict[key] > tag:
                ans.append(key)
        return ans


nums = [3,2,3]
Solution().majorityElement(nums)
